Modal এবং Push Navigation
iOS অ্যাপ্লিকেশন ডেভেলপমেন্টে Modal Navigation এবং Push Navigation হলো দুটি ভিন্ন নেভিগেশন প্যাটার্ন, যা ভিউ কন্ট্রোলারগুলোর মধ্যে ইন্টারঅ্যাকটিভিটি এবং নেভিগেশন নিশ্চিত করে। UINavigationController ব্যবহারের মাধ্যমে Push Navigation সাধারণত একটি স্ট্যাক ভিত্তিক পদ্ধতি, যেখানে Modal Navigation ভিউ কন্ট্রোলারগুলোকে প্রেজেন্ট করে সরাসরি ব্যবহারকারীর স্ক্রিনে উপস্থাপন করা হয়। এই দুটি পদ্ধতির ব্যবহার এবং তাদের পার্থক্য নিচে বিস্তারিতভাবে আলোচনা করা হলো:
Push Navigation
Push Navigation UINavigationController ব্যবহার করে পরিচালিত হয় এবং এটি ভিউ কন্ট্রোলারগুলোর মধ্যে স্ট্যাক ভিত্তিক নেভিগেশন প্রদান করে।
Push Navigation এর বৈশিষ্ট্য:
- স্ট্যাক ভিত্তিক: UINavigationController একটি স্ট্যাক ব্যবহার করে ভিউ কন্ট্রোলারগুলোকে পুশ এবং পপ করে।
- ব্যাক নেভিগেশন সাপোর্ট: প্রতিটি নতুন ভিউ কন্ট্রোলার পুশ করলে UINavigationBar-এ একটি ব্যাক বোতাম দেখা যায়, যা ব্যবহারকারীকে পূর্বের ভিউতে ফেরত যেতে সাহায্য করে।
- হায়ারারক্যাল নেভিগেশন: এটি হায়ারারক্যাল তথ্য দেখানোর জন্য কার্যকরী। উদাহরণস্বরূপ, একটি মেইল অ্যাপে ইনবক্স থেকে একটি নির্দিষ্ট মেইলে যাওয়া।
Push Navigation ব্যবহার করার উদাহরণ:
let detailViewController = DetailViewController()
navigationController?.pushViewController(detailViewController, animated: true)
এই কোডের মাধ্যমে বর্তমান ভিউ কন্ট্রোলার থেকে DetailViewController পুশ করা হচ্ছে, যা UINavigationController-এর স্ট্যাকের শীর্ষে যোগ হবে।
Push Navigation এর ব্যবহার উপযুক্ত:
- হায়ারারক্যাল ডেটা প্রদর্শন করার জন্য যেমন তালিকা বা মেনু।
- ক্রমান্বয়ে এক ভিউ থেকে আরেক ভিউতে যাওয়ার জন্য।
- ব্যবহারকারীর ইন্টারঅ্যাকশনের উপর ভিত্তি করে ড্রিল-ডাউন নেভিগেশনের জন্য।
Modal Navigation
Modal Navigation হলো একটি পদ্ধতি যেখানে একটি ভিউ কন্ট্রোলার সরাসরি প্রেজেন্ট করা হয়, সাধারণত সম্পূর্ণ নতুন স্ক্রিন হিসেবে। এটি UINavigationController-এ নির্ভর করে না এবং একটি ভিন্ন কনটেক্সট তৈরি করতে ব্যবহৃত হয়, যেখানে ব্যবহারকারীকে একটি নির্দিষ্ট কাজ সম্পন্ন করতে বা কিছু তথ্য প্রদান করতে বলা হয়।
Modal Navigation এর বৈশিষ্ট্য:
- পুরোস্ক্রিন বা Sheet স্টাইল: Modal প্রেজেন্টেশনে ভিউ কন্ট্রোলার পুরো স্ক্রিন দখল করতে পারে বা শীট স্টাইলে অংশিকভাবে প্রদর্শিত হতে পারে।
- ডিসমিস (Dismiss) অপশন: ব্যবহারকারী সাধারণত একটি ক্রস বোতাম, "Done" বা "Cancel" বোতাম ট্যাপ করে Modal ভিউ ডিসমিস করতে পারে।
- টাস্ক ভিত্তিক: Modal ভিউ সাধারণত নির্দিষ্ট কাজ (যেমন, ফর্ম পূরণ করা, সেটিংস পরিবর্তন করা) বা কনটেক্সটের জন্য ব্যবহৃত হয়।
Modal Navigation ব্যবহার করার উদাহরণ:
let modalViewController = ModalViewController()
modalViewController.modalPresentationStyle = .fullScreen // বা .pageSheet
present(modalViewController, animated: true, completion: nil)
এই কোডের মাধ্যমে ModalViewController প্রেজেন্ট করা হচ্ছে যা পুরো স্ক্রিন বা শীট স্টাইলে প্রদর্শিত হবে।
Modal Presentation Styles:
Modal ভিউ কন্ট্রোলারগুলোতে বিভিন্ন প্রেজেন্টেশন স্টাইল রয়েছে:
- fullScreen: পুরো স্ক্রিন দখল করে।
- pageSheet: স্ক্রিনের মাঝামাঝি অংশ দখল করে, সাধারণত iPad বা বড় ডিভাইসে।
- formSheet: ফর্ম স্টাইলের মতো, সাধারণত ছোট ডিভাইসগুলোতে।
- currentContext: বর্তমান ভিউ কন্ট্রোলার প্রেজেন্ট করা হচ্ছে।
Modal Navigation এর ব্যবহার উপযুক্ত:
- নির্দিষ্ট টাস্ক যেমন ফর্ম পূরণ করা, সাইন ইন করা বা সেটিংস পরিবর্তন করা।
- একটি সম্পূর্ণ নতুন কনটেক্সট তৈরি করা যেখানে ব্যবহারকারীকে কিছু তথ্য ইনপুট দিতে হবে।
- ছোট কাজ সম্পন্ন করার জন্য, যেখানে হায়ারারক্যাল নেভিগেশনের প্রয়োজন নেই।
Push এবং Modal Navigation এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | Push Navigation | Modal Navigation |
|---|---|---|
| প্রেজেন্টেশন পদ্ধতি | UINavigationController এর মাধ্যমে স্ট্যাক ভিত্তিক | সরাসরি প্রেজেন্ট করা হয়, UINavigationController প্রয়োজন হয় না |
| ব্যাক নেভিগেশন | ডিফল্ট ব্যাক বোতাম প্রদান করে | ডিসমিস বাটন বা ক্রস বাটনের মাধ্যমে ডিসমিস করা হয় |
| ব্যবহার উপযুক্ত | হায়ারারক্যাল নেভিগেশন এবং ড্রিল-ডাউন নেভিগেশন | নির্দিষ্ট টাস্ক বা কনটেক্সট ভিত্তিক কাজ |
| প্রেজেন্টেশন স্টাইল | UINavigationController এর মাধ্যমে একটি নির্দিষ্ট শিরোনাম | পুরো স্ক্রিন, শীট বা ফর্ম স্টাইলের প্রেজেন্টেশন |
কখন কোনটি ব্যবহার করবেন?
- Push Navigation ব্যবহার করুন যখন আপনাকে হায়ারারক্যাল ডেটা বা ক্রমান্বয়ে একাধিক স্ক্রিন দেখাতে হবে।
- Modal Navigation ব্যবহার করুন যখন একটি নির্দিষ্ট কাজ (যেমন ফর্ম পূরণ করা বা সেটিংস পরিবর্তন করা) সম্পন্ন করতে হবে যা বর্তমান নেভিগেশন কন্টেক্সট থেকে আলাদা।
উদাহরণ: Push এবং Modal Navigation একসাথে ব্যবহার করা
class HomeViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
self.title = "Home"
// Push Navigation Button
let pushButton = UIButton(type: .system)
pushButton.setTitle("Go to Details", for: .normal)
pushButton.addTarget(self, action: #selector(pushToDetails), for: .touchUpInside)
pushButton.frame = CGRect(x: 50, y: 200, width: 300, height: 50)
view.addSubview(pushButton)
// Modal Navigation Button
let modalButton = UIButton(type: .system)
modalButton.setTitle("Open Modal", for: .normal)
modalButton.addTarget(self, action: #selector(presentModal), for: .touchUpInside)
modalButton.frame = CGRect(x: 50, y: 300, width: 300, height: 50)
view.addSubview(modalButton)
}
@objc func pushToDetails() {
let detailVC = DetailViewController()
navigationController?.pushViewController(detailVC, animated: true)
}
@objc func presentModal() {
let modalVC = ModalViewController()
modalVC.modalPresentationStyle = .fullScreen
present(modalVC, animated: true, completion: nil)
}
}
class DetailViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .lightGray
self.title = "Details"
}
}
class ModalViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .systemTeal
self.title = "Modal"
let dismissButton = UIButton(type: .system)
dismissButton.setTitle("Dismiss", for: .normal)
dismissButton.addTarget(self, action: #selector(dismissModal), for: .touchUpInside)
dismissButton.frame = CGRect(x: 50, y: 200, width: 300, height: 50)
view.addSubview(dismissButton)
}
@objc func dismissModal() {
dismiss(animated: true, completion: nil)
}
}
এই উদাহরণে, HomeViewController দুটি বোতাম ব্যবহার করে Push এবং Modal নেভিগেশনের জন্য দুটি আলাদা ভিউ কন্ট্রোলার ব্যবহার করে।
সারসংক্ষেপ:
- Push Navigation হায়ারারক্যাল নেভিগেশনের জন্য আদর্শ, যেখানে ভিউ কন্ট্রোলারগুলো ক্রমান্বয়ে পুশ এবং পপ করা হয়।
- Modal Navigation নির্দিষ্ট টাস্ক এবং আলাদা কনটেক্সটের জন্য ব্যবহার করা হয়, যেখানে নতুন স্ক্রিন পুরো স্ক্রিন বা শীট হিসেবে প্রেজেন্ট করা হয়।
Modal এবং Push Navigation সঠিকভাবে ব্যবহার করে iOS অ্যাপ্লিকেশনগুলোতে আরও ইন্টারেক্টিভ এবং প্রয়োজনীয় নেভিগেশন প্যাটার্ন তৈরি করা যায়।
Read more